#ifndef BUFFER_H_
#define BUFFER_H_

#include <string>
#include <vector>
#include "Compuesto.h" // SI HAY PROBLEMA CON ESTO SE PONE Class Compuesto;
#include "Almacenamiento.h"


//Clase para implementar un almacenamiento en un Buffer de Memoria.
class Buffer: public Almacenamiento{
	public:
		Buffer(int tamanioMAX);
		int escribir(Componente& componente, int offset);
		Componente* leer(int offset);
		void borrarComp(int offset);
		void imprimir();

		int buscarEspacioLibre(int);

		// Textos
		void modificarTexto(Componente&);
		void borrarTexto(Componente&);
		Componente* leerTexto(int);
		void escribirTexto(Componente&);

		void crearMetadata(char tipo, int tamanio, list<string> tipos, list<bool> claves);
		void inicializarMetadata(char tipo);
		Metadata* abrir(char tipo);//binario o texto
		void cerrar();
		int eof();

		int getcantidadBloques();
		int aumentarComponentesBloques();
		int getOffsetComienzoDatos();

	private:
		int cantComponenteEnMemoria;
		vector<Componente*> datos;
		unsigned int taminioMAX;
 };

#endif /*BUFFER_H_*/
